home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr28 / mxmnu239.zip / MARXREAD.ME < prev    next >
Text File  |  1993-03-22  |  15KB  |  522 lines

  1. Version 2.37
  2.  
  3. 02-27-92
  4.  
  5. Digital Research (Novell) has published it's API programmers interface
  6. into it's TaskMax task switcher. And I have added these features to
  7. MarxMenu. MarxMenu can now totally control the TaskMax interface and
  8. replace the TaskMax popup menu with a write your own interface MarxMenu
  9. system.
  10.  
  11. I want to make the comment that this interface is an example of a
  12. programmers interface done right. It took me only a few hours to
  13. interface into every significant routine that DR offered. The interface
  14. was simple and straight forward and easy to program for and I want to
  15. thank DRI for doing it right.
  16.  
  17. For those of you out there who might now ask me about a Windows version
  18. the answer is still no. The reason being that Windows is a programmers
  19. nightmare and a support nightmare. I think windows is a mistake and a
  20. mistake that I'm not going to support. Those vendors who have been
  21. pressured into comming out with Windows versions of their product have
  22. had their DOS products freeze in time. It is my position that DOS comes
  23. first and as long as DOS is the #1 operating system sold and continues
  24. to outsell Windows by 10 to 1 I will stay committed do DOS products.
  25.  
  26. I personally am using MS-DOS 5 on my workstations because my current
  27. copy of DR 6 (and I have the December-91 update) has a number of bigs.
  28. One of these is slow floppy disk problem and since I'm in the software
  29. producing business and produce a lot of floppies it's an issue for me. I
  30. am hoping that Digital Research gets this and other bugs fixed so that I
  31. can switch.
  32.  
  33. Having gotten that off my chest, here's the new features:
  34.  
  35. I have written a quite elaborate sample menu TMAX.MNU that demonstrates
  36. the power of these new features. Anyone wanting to do serious work with
  37. this should look at this sample first.
  38.  
  39.  
  40. TMaxInstalled : Boolean
  41. This function returns true if TaskMax is installed. Any other TaskMax
  42. command produces a run-time error if used when TaskMax is not installed.
  43.  
  44.  
  45. TMaxResult : Number
  46. TMaxResult is a variable containing return information that other TMax
  47. command return or the result status of a TMax command.
  48.  
  49.  
  50. TMaxCreateTask (command string)
  51. TMaxCreateTask creates a new task and executes it. You pas it a command
  52. line just like you would use the Execute program. Like the execute
  53. program, if you use the COM or EXE extension then you won't load a
  54. secondary command.com and save yourself 5k of memory and gain some
  55. speed. When the program exits that task is cleared.
  56.  
  57.  Example:
  58.     TMaxCreateTask 'DIR *.*'
  59.  
  60.  
  61. TMaxSwitchTasks (TaskID)
  62. Switches the current task out and selects the task identified be TaskID.
  63.  
  64.  
  65. TMaxDeleteTask (TaskID)
  66. Kills the task identified by TaskID.
  67.  
  68.  
  69. TMaxMaxTasks : Number
  70. Returns the total number of tasks allowed by TaskMax.
  71.  
  72.  
  73. TMaxActiveTasks : Number
  74. Returns the number of active tasks.
  75.  
  76.  
  77. TMaxDirectSwitching (On/Off)
  78. Turns on or off the ability to use the direct switch keys without going
  79. through the task manager menu.
  80.  
  81.  
  82. TMaxEMSMemLim (Number)
  83. This is a variable that can be either read or set to the maximum number
  84. of bytes of EMS memory that each task can have. This prevents one task
  85. from hogging up all the EMS. Setting this to 0 disables limiting.
  86.  
  87.  Example:
  88.     TMaxEMSMemLim = 2000000   ;2 megs per task
  89.     Writeln TMaxEMSLim
  90.  
  91.  
  92. TMaxReadTaskInfo (2D Array)
  93. Reads the task information table into a 2 dimensional array where the
  94. first field is the task name and the second field is the TaskId number.
  95. The TaskID number is used by all TMax commands that act on a single task
  96. (TMaxDelete, TMaxSwitchTasks ... ).
  97.  
  98.  Example:
  99.     var Tasks
  100.     TMaxReadTaskInfo(Tasks)
  101.     Loop Tasks
  102.        Writeln Tasks[LoopIndex,1] ' ' Tasks[LoopIndex,2]
  103.     EndLoop
  104.  
  105.  
  106. TMaxSwitchToManager
  107. This command brings up the task manager the same way as if you had
  108. pressed the hot key.
  109.  
  110.  
  111. TMaxTakeOver (On/Off)
  112. This allows you MarxMenu program to become the task manager menu. When
  113. the user presses the hot key to pop up the task switching menu it will
  114. pop up your MarxMenu program instead. You can disable this by setting it
  115. to off.
  116.  
  117.  
  118. TMaxThisTask : Number
  119. Returns the TaskID of the current task.
  120.  
  121.  
  122. TMaxVersion : Number
  123. Returns the version number of TaskMax.
  124.  
  125.  
  126. TMaxReturnCount
  127. This variable sets the number of timer ticks (18.2 ticks per second)
  128. that TMaxCreateTask will execute a program before returning to the
  129. original program. If it is set to 0 it will stay in the original
  130. program. By setting TMaxReturnCount to a number other than 0 you can run
  131. a program for a few seconds and come back. This is used to preload tasks
  132. that you might later want to switch to.
  133.  
  134.   Example:
  135.      TMaxReturnCount = 27      ;1.5 Seconds
  136.      TMaxCreateTask 'DM3.EXE'  ;load a file manager
  137.      TMaxReturnCount = 0       ;set back to 0 for normal usage
  138.  
  139.  
  140. TMaxTaskOpenFiles (TadkID) : Number
  141. Returns the number of open files a task has. You may want to test to see
  142. if a task that open files before deleting the task.
  143.  
  144.  
  145. TMaxCut (TaskID)
  146. Activates TaskMax data cutting function.
  147.  
  148.  
  149. TMaxPaste (TaskID)
  150. Activates TaskMax data pasting function.
  151.  
  152.  
  153. TMaxGetPasteBuffer (Array)
  154. Reads the TaskMax paste buffer into and array of strings.
  155.  
  156.  
  157. TMaxSetPasteBuffer (Array)
  158. Sets the TaskMax paste buffer to the strings in array.
  159.  
  160.  
  161. Other Features:
  162.  
  163. PickManyPositions (Array)
  164. After running PickMany and array PickManyPositions is created the has
  165. the position numbers in the original array that were chosen.
  166.  
  167. ===============================================================
  168.  
  169. Version 2.38
  170.  
  171. 04-08-92
  172.  
  173. I'm adding features to make data input easier.
  174.  
  175. InputLength
  176. When using Readln to get input from the keyboard, MarxMenu normally
  177. accepts data from the cursor to the edge of the current window. By
  178. setting InputLength to a value, MarxMenu will limit the size of the data
  179. to a specific length.
  180.  
  181.  Example:
  182.    InputLength = 10
  183.    Write 'Enter Postal Code: '
  184.    ZipCode = Readln
  185.  
  186. InputLength is reset to 0 after each Readln.
  187.  
  188.  
  189. InputBlankChar
  190. InputBlankChar is used with Readln to display the input string area for
  191. entering information into a string. By default it is set to a space
  192. character but can be set to an underline or other characters to make the
  193. field size visable.
  194.  
  195.  Example:
  196.    InputBlankChar = '_'  ;underline
  197.    InputLength = 10
  198.    Write 'Enter Postal Code: '
  199.    ZipCode = Readln
  200.  
  201.  
  202. WordStarKeys (On/Off)
  203. In the early days of MarxMenu I mapped many of the cursor movement keys
  204. to match the WordStar key strokes. Now you can turn this off to get the
  205. real scan codes from the arrow keys.
  206.  
  207.  
  208. TrimInputString (On/Off)
  209. TrimInputString if set to on will cause blank characters to be trimmed
  210. from the front and tail of a string read from the keyboard with Readln.
  211.  
  212.  
  213. I've also defined some new constant keys if WordStarKeys are on they are
  214. translated to the WordStar equivelents.
  215.  
  216.   Key              Scan     WordStar
  217.   ----------------------------------
  218.   UpArrow        = #0#72    ^E
  219.   DownArrow      = #0#80    ^X
  220.   LeftArrow      = #0#75    ^S
  221.   RightArrow     = #0#77    ^D
  222.   HomeKey        = #0#71    ^W
  223.   EndKey         = #0#79    ^Z
  224.   CtrlLeftArrow  = #0#115   ^A
  225.   CtrlRightArrow = #0#116   ^F
  226.   PgUpKey        = #0#73    ^R
  227.   PgDnKey        = #0#81    ^C
  228.   InsKey         = #0#82    ^V
  229.   DelKey         = #0#83    ^G
  230.  
  231.  
  232. 04-27-92
  233.  
  234. For those of you who are using MHS mail, I've got some goodies for you.
  235. MarxMenu can now read MHS messages. This can be used to create a Fax
  236. Server program that responds to MHS messages. Something that I'm working
  237. on for my own use.
  238.  
  239.  
  240. MhsDirectory : String
  241. Returns the directory of MHS.
  242.  
  243.  Example:
  244.    Writeln MhsDirectory   ; '\\TYME\SYS\MHS'
  245.  
  246.  
  247. MhsMailDirectory : String
  248. Returns the mail directory of MHS.
  249.  
  250.  Example:
  251.    Writeln MhsMailDirectory   ; '\\TYME\SYS\MHS\MAIL'
  252.  
  253.  
  254. MhsSendDirectory : String
  255. Returns the directory of MHS where messages are placed to be sent.
  256.  
  257.  Example:
  258.    Writeln MhsSendDirectory   ; '\\TYME\SYS\MHS\MAIL\SND'
  259.  
  260.  
  261. MhsUserDirectory : String
  262. Returns the user directory of MHS.
  263.  
  264.  Example:
  265.    Writeln MhsMailDirectory   ; '\\TYME\SYS\MHS\MAIL\USERS\MARC'
  266.  
  267.  
  268. MhsReadFile (FileName,Header,Message)
  269. MhsReadFile reads FilName into two arrays. The Header array contains the
  270. MHS message header. The Message array contains the MHS message.
  271.  
  272.  Example:
  273.    var MailFiles Mail Headers X
  274.  
  275.    WholeFileNames
  276.    ReadDirectory(MhsUserDirectory + '\MHS\*.',MailFiles)
  277.  
  278.    Loop MailFiles
  279.       MhsReadFile(MailFiles[LoopIndex],Mail[LoopIndex],Headers[LoopIndex])
  280.    EndLoop
  281.  
  282.    Loop Mail
  283.       X = LoopIndex
  284.       Loop Headers[X]
  285.          Writeln Headers[X,LoopIndex]
  286.       EndLoop
  287.  
  288.       Loop Mail[X]
  289.          Writeln Mail[X,LoopIndex]
  290.       EndLoop
  291.    EndLoop
  292.  
  293.  
  294. 05-11-92
  295.  
  296. InvertString (String)
  297. InvertString turns a string around so that characters are in reverse
  298. order. This allows for correct string compares and sorts in Hebrew and
  299. Arabic and other languages that are read from right to left.
  300.  
  301.  Example:
  302.    var St
  303.    St = 'ABCDE'
  304.    InvertString(St)
  305.    Writeln St        ;Returns 'EDCBA'
  306.  
  307.  
  308. TMaxNameTask (Task,Name)
  309. Normally TaskMax automatically names tasks according to what program is
  310. running. TMaxNameTask allows you to override the default task name with
  311. a task name of your choosing. The name is limited to 8 characters,
  312.  
  313.  Example:
  314.    TMaxNameTask (2,'MYNAME')   ;renames task 2
  315.  
  316.  
  317. 05-18-92
  318.  
  319. NovAutoDetach (On/Off)
  320. When using MarxMenu to log into a Novell network, MarxMenu will detach
  321. from the file server, if AutoDetach is on, when the screen blanker kicks
  322. in, and reattach when the screen is restored. This keeps the workstation
  323. from tying up a connection number while waiting to log in. Default is
  324. on.
  325.  
  326.  
  327. MatrixInvert (2D Array)
  328. MatrixInvert reverses the coordinates of a 2 dimensional array. This is
  329. uesfull when used with ReadAscTextFile to reverse the field and record
  330. layout.
  331.  
  332.  Example:
  333.    var Data NameList
  334.  
  335.    ReadAscTextFile('PHONE.LST',Data)
  336.    MatrixInvert Data
  337.    NameList = Data[1]
  338.  
  339.  
  340. SortArrayLinked (2D Array,Array)
  341. SortArrayLinked is used to sort one array based on a key array that is
  342. generated from the original array. The sort of the key array controls
  343. the sort order of both arrays. The number of elements needs to be the
  344. same in both arrays.
  345.  
  346.  Example:
  347.    var Data DataTemp NameList
  348.  
  349.    ReadAscTextFile('PHONE.LST',Data)
  350.    DataTemp = Data
  351.    MatrixInvert DataTemp
  352.    NameList = DataTemp[1]
  353.    SortArrayLinked(Data,NameList)
  354.  
  355.  
  356. In this release I'm attempting to fill in all remaining Bindery calls so
  357. that every bindery API is supported.
  358.  
  359. NovWritePropValue (Array,Obj,Prop,Type)
  360. NovWritePropValue is used to write values to Item properties only and
  361. not to static properties. Item properties contain data in 128 byte
  362. segments. These segments are passed as an array of strings. If you are
  363. passing binary data then build the binary data into the string array.
  364. Any strings that have less than 128 bytes are padded with zeros.
  365.  
  366.  Example:
  367.    AppendArray(Values,'123')
  368.    AppendArray(Values,'456')
  369.    AppendArray(Values,'789')
  370.    NovWritePropValue(Values,'TEST','WASTE',2)
  371.  
  372.  
  373. NovDeleteProperty (Obj,Prop,Type)
  374. NovDeleteProperty deletes a property from an object.
  375.  
  376.  Example:
  377.    NovDeleteProperty('TEST','WASTE',2)
  378.  
  379.  
  380. NovOpenBindery
  381. Opens the Novell bindery for access.
  382.  
  383.  
  384. NovCloseBindery
  385. Closes the Novell bindery for access.
  386.  
  387.  
  388. 05-19-92
  389.  
  390. InFile : String
  391. When using StandardIO the input and output files by default use the
  392. console. The input can be overridden by setting InFife to point to a
  393. different file or device.
  394.  
  395.  Example:
  396.     InFile = 'INPUT.TXT'
  397.     StandardIO
  398.  
  399.  
  400. OutFile : String
  401. When using StandardIO the input and output files by default use the
  402. console. The output can be overridden by setting InFife to point to a
  403. different file or device.
  404.  
  405.  Example:
  406.     OutFile = 'OUPTUT.TXT'
  407.     StandardIO
  408.  
  409.  
  410. 05-19-92
  411.  
  412. PadLeft (String,Length) : String
  413. PadLeft will return String filled with blanks on the left side so the
  414. the length of the string is Length.
  415.  
  416.  Example:
  417.    Writeln PadLeft('123',5)   ;returns '  123'
  418.  
  419.  
  420. PadRight (String,Length) : String
  421. PadRight will return String filled with blanks on the right side so the
  422. the length of the string is Length.
  423.  
  424.  Example:
  425.    Writeln PadRight('123',5)   ;returns '123  '
  426.  
  427.  
  428. LowerCase (String) : String
  429. Returns the lower case of the string according to international
  430. character rules.
  431.  
  432.  Example:
  433.    Writeln LowerCase('ABCDE')   ;returns 'abcde'
  434.  
  435.  
  436. WriteError (String)
  437. This command works just like Write except that it writes to the DOS
  438. error device handle. This can be used to put messages on the screen when
  439. the output is redirected to a file.
  440.  
  441.  
  442. WritelnError (String)
  443. This command works just like Writeln except that it writes to the DOS
  444. error device handle. This can be used to put messages on the screen when
  445. the output is redirected to a file.
  446.  
  447.  
  448. NovGetConnections (Array,Name,Type)
  449. NovGetConnections return an array of connection numbers that a specified
  450. user or other object is attached to. For users use type 1.
  451.  
  452.  Example:
  453.    var Connections
  454.    NovGetConnections(Connections,'VICKI',1)
  455.    Loop Connections
  456.       NovSendMessage('The Princess Called!',Connections[LoopIndex])
  457.    EndLoop
  458.  
  459.  
  460. Break (On/Off)
  461. Turns break checking on and off the same way that it does from batch
  462. files.
  463.  
  464.  
  465. NovPasswordRequired (Name) : Boolean
  466. Returns True if Name requires a password. If Name is left off the
  467. current user is assumed.
  468.  
  469.  Example:
  470.    if NovPasswordRequired then Writeln 'Password Required!'
  471.    if NovPasswordRequired ('BOB') then Writeln 'Password Required!'
  472.  
  473.  
  474. 06-02-92
  475.  
  476. Added some new features to the example files. METER.INC has been
  477. modified to include usage logging. I've included CRAWL.INC that displays
  478. crawling text on the bottom of the screen. Read the comment area in
  479. these two files for details on how to use these features.
  480.  
  481.  
  482. 06-03-92
  483.  
  484. In spite of documentation, people keep trying to run LOGOUT and LOGOFF
  485. programs from the menu instead of using |LogOff. I have now changed the
  486. compiler to look for these words and compile |Logoff.
  487.  
  488. 06-17-92
  489.  
  490. I've expanded the syntax of NovCaptureQueue to accept the server name as
  491. part of the queue name. Thus:
  492.  
  493.  NovCaptureQueue(2) = 'TYME/LASER' is valid.
  494.  
  495. ===============================================================
  496.  
  497. Version 2.39
  498.  
  499. 06-22-92
  500.  
  501. Did some serious internal cleanup and I'd like to think everything works
  502. better but if there is anything that doesn't work that used to, let me
  503. know and I'll fix it.
  504.  
  505. I'm in the process of expanding the marxmenu syntax allowing you to do
  506. things that you couldn't do before. You can now return Arrays as results
  507. from procedures.
  508.  
  509.  Example:
  510.    var X
  511.  
  512.    X = Test
  513.  
  514.    Procedure Test
  515.    var Z
  516.       ReadTextFile ('MARX.BAT',Z)
  517.       Return Z
  518.    EndProc
  519.  
  520. I've also improved the Novell menu translator so that it works better
  521. with nasty menus.
  522.